package com.snell.michael.kawaii;

import static com.snell.michael.kawaii.MicroTypes.newMicroType;

/**
 * Utility methods for micro type strings
 */
public class MicroTypeStrings {
    private MicroTypeStrings() {}

    public static <T extends MicroType<String>> T toUpperCase(T microTypeString) {
        if (microTypeString == null) {
            return null;
        } else {
            return newMicroType(microTypeString, microTypeString.value().toUpperCase());
        }
    }

    public static <T extends MicroType<String>> T toLowerCase(T microTypeString) {
        if (microTypeString == null) {
            return null;
        } else {
            //noinspection unchecked
            return newMicroType(microTypeString, microTypeString.value().toLowerCase());
        }
    }
}

@@ -293,36 +293,39 @@
 ring) %7B%0A        
-if (
+return 
 microTypeString 
@@ -335,72 +335,17 @@
 null
-) %7B%0A            return null;%0A        %7D else %7B%0A            return
+ ? null :
  new
@@ -407,34 +407,24 @@
 perCase());%0A
-        %7D%0A
     %7D%0A%0A    p
@@ -513,12 +513,15 @@
     
-if (
+return 
 micr
@@ -543,90 +543,170 @@
 null
-) %7B%0A            return null;%0A        %7D else %7B%0A            //noinspection unchecked
+ ? null : newMicroType(microTypeString, microTypeString.value().toLowerCase());%0A    %7D%0A%0A    public static %3CT extends MicroType%3CString%3E%3E T trim(T microTypeString) %7B
 %0A   
@@ -710,26 +710,55 @@
         
-    
 return
+ microTypeString == null ? null :
  newMicr
@@ -809,32 +809,15 @@
 ().t
-oLowerCase());%0A        %7D
+rim());
 %0A   

Improve cloning