// Path: config/src/main/java/io/confluent/common/config/types/Password.java
// public class Password {
// 
//     public static final String HIDDEN = "[hidden]";
// 
//     private final String value;
// 
//     /**
//      * Construct a new Password object
//      * @param value The value of a password
//      */
//     public Password(String value) {
//         this.value = value;
//     }
// 
//     @Override
//     public int hashCode() {
//         return value.hashCode();
//     }
// 
//     @Override
//     public boolean equals(Object obj) {
//         if (!(obj instanceof Password))
//             return false;
//         Password other = (Password) obj;
//         return value.equals(other.value);
//     }
// 
//     /**
//      * Returns hidden password string
//      *
//      * @return hidden password string
//      */
//     @Override
//     public String toString() {
//         return HIDDEN;
//     }
// 
//     /**
//      * Returns real password string
//      *
//      * @return real password string
//      */
//     public String value() {
//         return value;
//     }
// }


import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import io.confluent.common.config.types.Password;
  private Object parseType(String name, Object value, Type type) {
    try {
      String trimmed = null;
      if (value instanceof String) {
        trimmed = ((String) value).trim();
      }
      switch (type) {
        case BOOLEAN:
          if (value instanceof String) {
            if (trimmed.equalsIgnoreCase("true")) {
              return true;
            } else if (trimmed.equalsIgnoreCase("false")) {
              return false;
            } else {
              throw new ConfigException(name, value, "Expected value to be either true or false");
            }
          } else if (value instanceof Boolean) {
            return value;
          } else {
            throw new ConfigException(name, value, "Expected value to be either true or false");
          }
        case STRING:
          if (value instanceof String) {
            return trimmed;
          } else {
            throw new ConfigException(name, value,
                                      "Expected value to be a string, but it was a " + value
                                          .getClass().getName());
          }
        case PASSWORD:
// Path: config/src/main/java/io/confluent/common/config/types/Password.java
// public class Password {
// 
//     public static final String HIDDEN = "[hidden]";
// 
//     private final String value;
// 
//     /**
//      * Construct a new Password object
//      * @param value The value of a password
//      */
//     public Password(String value) {
//         this.value = value;
//     }
// 
//     @Override
//     public int hashCode() {
//         return value.hashCode();
//     }
// 
//     @Override
//     public boolean equals(Object obj) {
//         if (!(obj instanceof Password))
//             return false;
//         Password other = (Password) obj;
//         return value.equals(other.value);
//     }
// 
//     /**
//      * Returns hidden password string
//      *
//      * @return hidden password string
//      */
//     @Override
//     public String toString() {
//         return HIDDEN;
//     }
// 
//     /**
//      * Returns real password string
//      *
//      * @return real password string
//      */
//     public String value() {
//         return value;
//     }
// }


// Path: config/src/main/java/io/confluent/common/config/ConfigDef.java
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import io.confluent.common.config.types.Password;

  private Object parseType(String name, Object value, Type type) {
    try {
      String trimmed = null;
      if (value instanceof String) {
        trimmed = ((String) value).trim();
      }
      switch (type) {
        case BOOLEAN:
          if (value instanceof String) {
            if (trimmed.equalsIgnoreCase("true")) {
              return true;
            } else if (trimmed.equalsIgnoreCase("false")) {
              return false;
            } else {
              throw new ConfigException(name, value, "Expected value to be either true or false");
            }
          } else if (value instanceof Boolean) {
            return value;
          } else {
            throw new ConfigException(name, value, "Expected value to be either true or false");
          }
        case STRING:
          if (value instanceof String) {
            return trimmed;
          } else {
            throw new ConfigException(name, value,
                                      "Expected value to be a string, but it was a " + value
                                          .getClass().getName());
          }
        case PASSWORD:
          if (value instanceof Password)