/** INTERNAL: Check if the field is contained in the row. */
 public boolean containsKey(DatabaseField key) {
   // Optimize check.
   int index = key.getIndex();
   if ((index >= 0) && (index < this.size)) {
     DatabaseField field = (DatabaseField) this.fields.get(index);
     if ((field == key) || field.equals(key)) {
       return true;
     }
   }
   return this.fields.contains(key);
 }
 /** INTERNAL: Returns the row's field with the same name. */
 public DatabaseField getField(DatabaseField key) {
   // Optimize check.
   int index = key.getIndex();
   if ((index >= 0) && (index < getFields().size())) {
     DatabaseField field = (DatabaseField) getFields().elementAt(index);
     if ((field == key) || field.equals(key)) {
       return field;
     }
   }
   for (index = 0; index < getFields().size(); index++) {
     DatabaseField field = (DatabaseField) getFields().elementAt(index);
     if ((field == key) || field.equals(key)) {
       return field;
     }
   }
   return null;
 }
 /** INTERNAL: Retrieve the value for the field. If missing DatabaseRow.noEntry is returned. */
 public Object getIndicatingNoEntry(DatabaseField key) {
   // PERF: Direct variable access.
   // ** Code duplicated in get, ensure kept in synch **
   // Optimize check.
   int index = key.getIndex();
   if ((index >= 0) && (index < this.size)) {
     DatabaseField field = (DatabaseField) this.fields.get(index);
     if ((field == key) || field.equals(key)) {
       return this.values.get(index);
     }
   }
   int fieldsIndex = this.fields.indexOf(key);
   if (fieldsIndex >= 0) {
     // PERF: If the fields index was not set, then set it.
     if (index == -1) {
       key.setIndex(fieldsIndex);
     }
     return this.values.get(fieldsIndex);
   } else {
     return AbstractRecord.noEntry;
   }
 }