// Path: src/main/java/com/cloudera/director/spi/v2/model/LocalizationContext.java
// public interface LocalizationContext {
// 
//   /**
//    * Localization context factory.
//    */
//   interface Factory {
// 
//     /**
//      * Creates a root localization context for the specified locale.
//      *
//      * @param locale the locale
//      * @return a root localization context for the specified locale
//      */
//     LocalizationContext createRootLocalizationContext(Locale locale);
//   }
// 
//   /**
//    * Returns the locale.
//    *
//    * @return the locale
//    */
//   Locale getLocale();
// 
//   /**
//    * Returns the key prefix of the context, which can be used for property namespacing.
//    *
//    * @return the key prefix of the context
//    */
//   String getKeyPrefix();
// 
//   /**
//    * Returns a localized value for the specified localization key suffix components,
//    * or the specified default value if a localized value cannot be determined.
//    *
//    * @param defaultValue  the default value to return if a localized value cannot be determined
//    * @param keyComponents the localization key suffix components
//    * @return a localized value for the specified localization key suffix components,
//    * or the specified default value if a localized value cannot be determined
//    */
//   String localize(String defaultValue, String... keyComponents);
// }
// 
// Path: src/main/java/com/cloudera/director/spi/v2/model/Property.java
// public interface Property<W extends Enum<W>> extends Serializable {
// 
//   /**
//    * Represents the type of a property.
//    */
//   enum Type {
// 
//     /**
//      * Boolean-valued property type.
//      */
//     BOOLEAN,
// 
//     /**
//      * Integer-valued property type.
//      */
//     INTEGER,
// 
//     /**
//      * Double-valued property type.
//      */
//     DOUBLE,
// 
//     /**
//      * String-valued property type.
//      */
//     STRING
//   }
// 
//   /**
//    * Returns the type of the display property.
//    *
//    * @return the type of the display property
//    */
//   Type getType();
// 
//   /**
//    * Returns the widget used to display values of the property.
//    *
//    * @return the widget used to display values of the property
//    */
//   W getWidget();
// 
//   /**
//    * Returns the localized human-readable name of the display property for labels
//    * and error messages.
//    *
//    * @param localizationContext the localization context
//    * @return the localized human-readable name of the display property for labels
//    * and error messages
//    */
//   String getName(LocalizationContext localizationContext);
// 
//   /**
//    * Returns the localized human-readable description of the display property.
//    *
//    * @param localizationContext the localization context
//    * @return the localized human-readable description of the display property
//    */
//   String getDescription(LocalizationContext localizationContext);
// 
//   /**
//    * Returns whether the display property contains sensitive information.
//    *
//    * @return whether the display property contains sensitive information
//    */
//   boolean isSensitive();
// 
//   /**
//    * Returns whether the display property should be hidden from the user interface.
//    *
//    * @return whether the display property should be hidden from the user interface
//    */
//   boolean isHidden();
// }
// 
// Path: src/main/java/com/cloudera/director/spi/v2/util/Preconditions.java
// public final class Preconditions {
// 
//   /**
//    * Private constructor to prevent instantiation.
//    */
//   private Preconditions() {
//   }
// 
//   /**
//    * Ensures that an object reference passed as a parameter to the calling
//    * method is not null.
//    *
//    * @param instance an object
//    * @param message the exception message to use if the check fails; will
//    *     be converted to a string using {@link String#valueOf(Object)}
//    * @return the non-null reference that was validated
//    * @throws NullPointerException if {@code reference} is null
//    */
//   public static <T> T checkNotNull(T instance, String message) {
//     if (instance == null) {
//       throw new NullPointerException(message);
//     }
//     return instance;
//   }
// 
//   /**
//    * Ensures the truth of an expression involving one or more parameters to the
//    * calling method.
//    *
//    * @param expression a boolean expression
//    * @param message the exception message to use if the check fails; will
//    *     be converted to a string using {@link String#valueOf(Object)}
//    * @throws IllegalArgumentException if {@code expression} is false
//    */
//   public static void checkArgument(
//       boolean expression, Object message) {
//     if (!expression) {
//       throw new IllegalArgumentException(String.valueOf(message));
//     }
//   }
// }


import static com.cloudera.director.spi.v2.model.CommonLocalizableAttribute.DESCRIPTION;
import static com.cloudera.director.spi.v2.model.CommonLocalizableAttribute.NAME;
import com.cloudera.director.spi.v2.model.LocalizationContext;
import com.cloudera.director.spi.v2.model.Property;
import com.cloudera.director.spi.v2.util.Preconditions;
    return name;
  }

  @Override
  public W getWidget() {
    return widget;
  }

  /**
   * Returns the default human-readable description of the display property, used when a
   * localized description cannot be found.
   *
   * @return the default human-readable description of the display property, used when a
   * localized description cannot be found
   */
  public String getDefaultDescription() {
    return defaultDescription;
  }

  @Override
  public boolean isSensitive() {
    return sensitive;
  }

  @Override
  public boolean isHidden() {
    return hidden;
  }

  @Override
// Path: src/main/java/com/cloudera/director/spi/v2/model/LocalizationContext.java
// public interface LocalizationContext {
// 
//   /**
//    * Localization context factory.
//    */
//   interface Factory {
// 
//     /**
//      * Creates a root localization context for the specified locale.
//      *
//      * @param locale the locale
//      * @return a root localization context for the specified locale
//      */
//     LocalizationContext createRootLocalizationContext(Locale locale);
//   }
// 
//   /**
//    * Returns the locale.
//    *
//    * @return the locale
//    */
//   Locale getLocale();
// 
//   /**
//    * Returns the key prefix of the context, which can be used for property namespacing.
//    *
//    * @return the key prefix of the context
//    */
//   String getKeyPrefix();
// 
//   /**
//    * Returns a localized value for the specified localization key suffix components,
//    * or the specified default value if a localized value cannot be determined.
//    *
//    * @param defaultValue  the default value to return if a localized value cannot be determined
//    * @param keyComponents the localization key suffix components
//    * @return a localized value for the specified localization key suffix components,
//    * or the specified default value if a localized value cannot be determined
//    */
//   String localize(String defaultValue, String... keyComponents);
// }
// 
// Path: src/main/java/com/cloudera/director/spi/v2/model/Property.java
// public interface Property<W extends Enum<W>> extends Serializable {
// 
//   /**
//    * Represents the type of a property.
//    */
//   enum Type {
// 
//     /**
//      * Boolean-valued property type.
//      */
//     BOOLEAN,
// 
//     /**
//      * Integer-valued property type.
//      */
//     INTEGER,
// 
//     /**
//      * Double-valued property type.
//      */
//     DOUBLE,
// 
//     /**
//      * String-valued property type.
//      */
//     STRING
//   }
// 
//   /**
//    * Returns the type of the display property.
//    *
//    * @return the type of the display property
//    */
//   Type getType();
// 
//   /**
//    * Returns the widget used to display values of the property.
//    *
//    * @return the widget used to display values of the property
//    */
//   W getWidget();
// 
//   /**
//    * Returns the localized human-readable name of the display property for labels
//    * and error messages.
//    *
//    * @param localizationContext the localization context
//    * @return the localized human-readable name of the display property for labels
//    * and error messages
//    */
//   String getName(LocalizationContext localizationContext);
// 
//   /**
//    * Returns the localized human-readable description of the display property.
//    *
//    * @param localizationContext the localization context
//    * @return the localized human-readable description of the display property
//    */
//   String getDescription(LocalizationContext localizationContext);
// 
//   /**
//    * Returns whether the display property contains sensitive information.
//    *
//    * @return whether the display property contains sensitive information
//    */
//   boolean isSensitive();
// 
//   /**
//    * Returns whether the display property should be hidden from the user interface.
//    *
//    * @return whether the display property should be hidden from the user interface
//    */
//   boolean isHidden();
// }
// 
// Path: src/main/java/com/cloudera/director/spi/v2/util/Preconditions.java
// public final class Preconditions {
// 
//   /**
//    * Private constructor to prevent instantiation.
//    */
//   private Preconditions() {
//   }
// 
//   /**
//    * Ensures that an object reference passed as a parameter to the calling
//    * method is not null.
//    *
//    * @param instance an object
//    * @param message the exception message to use if the check fails; will
//    *     be converted to a string using {@link String#valueOf(Object)}
//    * @return the non-null reference that was validated
//    * @throws NullPointerException if {@code reference} is null
//    */
//   public static <T> T checkNotNull(T instance, String message) {
//     if (instance == null) {
//       throw new NullPointerException(message);
//     }
//     return instance;
//   }
// 
//   /**
//    * Ensures the truth of an expression involving one or more parameters to the
//    * calling method.
//    *
//    * @param expression a boolean expression
//    * @param message the exception message to use if the check fails; will
//    *     be converted to a string using {@link String#valueOf(Object)}
//    * @throws IllegalArgumentException if {@code expression} is false
//    */
//   public static void checkArgument(
//       boolean expression, Object message) {
//     if (!expression) {
//       throw new IllegalArgumentException(String.valueOf(message));
//     }
//   }
// }


// Path: src/main/java/com/cloudera/director/spi/v2/model/util/AbstractProperty.java
import static com.cloudera.director.spi.v2.model.CommonLocalizableAttribute.DESCRIPTION;
import static com.cloudera.director.spi.v2.model.CommonLocalizableAttribute.NAME;
import com.cloudera.director.spi.v2.model.LocalizationContext;
import com.cloudera.director.spi.v2.model.Property;
import com.cloudera.director.spi.v2.util.Preconditions;

    return name;
  }

  @Override
  public W getWidget() {
    return widget;
  }

  /**
   * Returns the default human-readable description of the display property, used when a
   * localized description cannot be found.
   *
   * @return the default human-readable description of the display property, used when a
   * localized description cannot be found
   */
  public String getDefaultDescription() {
    return defaultDescription;
  }

  @Override
  public boolean isSensitive() {
    return sensitive;
  }

  @Override
  public boolean isHidden() {
    return hidden;
  }

  @Override
  public String getName(LocalizationContext localizationContext) {