public ASNClassFactory(GramarFile fileName) {
    RawClassFactory rcf = new RawClassFactory(fileName);
    String rootNodeName = rcf.getRootClassName();

    RawClass rawclass = rcf.getRawClass(rootNodeName);
    // System.out.printf("\n Got RawClass for %s from file %s = \n %s ", rootNodeName, fileName
    // ,rawclass);

    ASNClass asnClass = toASNClass(rcf, rawclass, Field.ROOTFIELD);
    asnClass.toArray(); // We assume that the Top Level ASNClass is always an Array Type.

    Map<String, String> options = loadControlFile(fileName);
    String OPTION_BLOCKSIZE = "BLOCKSIZE";
    String OPTION_PADDINGBYTE = "PADDINGBYTE";

    if (options.containsKey(OPTION_BLOCKSIZE)) {
      asnClass.blockSize = Integer.parseInt(options.get(OPTION_BLOCKSIZE));
    }
    if (options.containsKey(OPTION_PADDINGBYTE)) {
      asnClass.paddingByte = (byte) Integer.parseInt(options.get(OPTION_PADDINGBYTE), 16);
    }

    field = new Field(Field.ROOTFIELD, Field.ROOTFIELD, AsnConst.POS_NOT_SPECIFIED, asnClass);
  }