// automatically generated by the FlatBuffers compiler, do not modify

package NamespaceC;

import java.nio.*;
import java.lang.*;
import java.util.*;
import com.google.flatbuffers.*;

public class TableInCT {
  private NamespaceA.TableInFirstNST referToA1;
  private NamespaceA.SecondTableInAT referToA2;

  public NamespaceA.TableInFirstNST getReferToA1() { return referToA1; }

  public void setReferToA1(NamespaceA.TableInFirstNST referToA1) { this.referToA1 = referToA1; }

  public NamespaceA.SecondTableInAT getReferToA2() { return referToA2; }

  public void setReferToA2(NamespaceA.SecondTableInAT referToA2) { this.referToA2 = referToA2; }


  public TableInCT() {
    this.referToA1 = null;
    this.referToA2 = null;
  }
}

