public function getHeraldFieldValueType($condition)
 {
     if ($this->getHeraldFieldStandardType()) {
         return parent::getHeraldFieldValueType($condition);
     }
     return $this->getCustomField()->getHeraldFieldValueType($condition);
 }
 public function testGetAllFields()
 {
     HeraldField::getAllFields();
     $this->assertTrue(true);
 }
 private function getFieldImplementationMap()
 {
     if ($this->fieldMap === null) {
         // We can't use PhutilClassMapQuery here because field expansion
         // depends on the adapter and object.
         $object = $this->getObject();
         $map = array();
         $all = HeraldField::getAllFields();
         foreach ($all as $key => $field) {
             $field = id(clone $field)->setAdapter($this);
             if (!$field->supportsObject($object)) {
                 continue;
             }
             $subfields = $field->getFieldsForObject($object);
             foreach ($subfields as $subkey => $subfield) {
                 if (isset($map[$subkey])) {
                     throw new Exception(pht('Two HeraldFields (of classes "%s" and "%s") have the same ' . 'field key ("%s") after expansion for an object of class ' . '"%s" inside adapter "%s". Each field must have a unique ' . 'field key.', get_class($subfield), get_class($map[$subkey]), $subkey, get_class($object), get_class($this)));
                 }
                 $subfield = id(clone $subfield)->setAdapter($this);
                 $map[$subkey] = $subfield;
             }
         }
         $this->fieldMap = $map;
     }
     return $this->fieldMap;
 }