code: private void verifyLink(TableDefinition tableDef, FieldDefinition linkDef) {
          String extent = linkDef.getLinkExtent();
          TableDefinition extentTableDef = getTableDef(extent);
          if (extentTableDef == null) {
              extentTableDef = new TableDefinition();
              extentTableDef.setTableName(extent);
              tableDef.getAppDef().addTable(extentTableDef);
          }
          
          String inverse = linkDef.getLinkInverse();
          FieldDefinition inverseLinkDef = extentTableDef.getFieldDef(inverse);
          if (inverseLinkDef == null) {
              inverseLinkDef = new FieldDefinition(inverse);
              inverseLinkDef.setType(linkDef.getType());
              inverseLinkDef.setLinkInverse(linkDef.getName());
              inverseLinkDef.setLinkExtent(tableDef.getTableName());
              extentTableDef.addFieldDefinition(inverseLinkDef);
          } else {
              Utils.require(inverseLinkDef.getType() == linkDef.getType() &&  // both link or xlink
                            inverseLinkDef.getLinkExtent().equals(tableDef.getTableName()) &&
                            inverseLinkDef.getLinkInverse().equals(linkDef.getName()),
                            "Link '%s' in table '%s' conflicts with inverse field '%s' in table '%s'",
                            linkDef.getName(), tableDef.getTableName(),
                            inverseLinkDef.getName(), extentTableDef.getTableName());
          }
      }
docs: has not been defined, add it automatically.