public void append(final HCatFieldSchema hfs) throws HCatException {
    if (hfs == null)
      throw new HCatException("Attempt to append null HCatFieldSchema in HCatSchema.");

    String fieldName = normalizeName(hfs.getName());
    if (fieldPositionMap.containsKey(fieldName))
      throw new HCatException("Attempt to append HCatFieldSchema with already " +
        "existing name: " + fieldName + ".");

    this.fieldSchemas.add(hfs);
    this.fieldNames.add(fieldName);
    this.fieldPositionMap.put(fieldName, this.size() - 1);
  }
@param fieldSchemas is now owned by HCatSchema. Any subsequent modifications
on fieldSchemas won't get reflected in HCatSchema.  Each fieldSchema's name
in the list must be unique, otherwise throws IllegalArgumentException.
hcatalog/core/src/main/java/org/apache/hive/hcatalog/data/schema/HCatSchema.java