code: public static String underscore(String camelCaseWord){
          if(camelCaseWord==null)
              return null;
          camelCaseWord = camelCaseWord.trim();
          if(camelCaseWord.length()==0)
              return "";
          camelCaseWord = camelCaseWord.replaceAll("([A-Z]+)([A-Z][a-z])", "$1_$2");
          camelCaseWord = camelCaseWord.replaceAll("([a-z\\d])([A-Z])", "$1_$2");
          return camelCaseWord.toLowerCase();
      }
docs: Makes an underscored form from the expression in the string.
  <p>
  Examples:
  <pre class="prettyprint">
  underscore("activeRecord")     // "active_record"
  underscore("ActiveRecord")     // "active_record"
  underscore("firstName")        // "first_name"
  underscore("FirstName")        // "first_name"
  underscore("name")             // "name"
  </pre>
  
  @param camelCaseWord the camel-cased word that is to be converted;
  @return a lower-cased version of the input, with separate words delimited by the underscore character.