public static void main(String[] args) {
        ArrayList<String> outerStringsList = new ArrayList<String>();
        ArrayList<StringBuffer> outerSBList = new ArrayList<StringBuffer>();// = (ArrayList) Arrays.asList("q",1,3.2f,'c');
        for (Integer i = 0; i < 5; i++ ) {
            outerStringsList.add(i.toString());
            StringBuffer sb = new StringBuffer(i.toString());
            outerSBList.add(sb);
        }
        int i = 10;
        final ImmutableObject anImmutableObject =
                new ImmutableObject(i, outerStringsList, outerSBList);
        System.out.println(anImmutableObject);

        System.out.println("try to modify anImmutableObject...");
        outerStringsList.add("ddddddddddddddd");
        outerStringsList.get(0).concat("qazzzzie");
        outerSBList.add(new StringBuffer("ddddd"));
        outerSBList.get(0).append("qaz");
        anImmutableObject.getStrings().add("qwerty");
        anImmutableObject.getStrings().get(0).concat("zzzzzzzzz");
        anImmutableObject.getStringBuffers().add(new StringBuffer("qwerty"));
        anImmutableObject.getStringBuffers().get(0).append("ssss");


        ImmutableObject clonedImmutableObject = null;
        try {
            clonedImmutableObject = anImmutableObject.deepCopy();
        } catch (CloneNotSupportedException e) {
            e.printStackTrace();
        }
        System.out.println("clonedImmutableObject != anImmutableObject: "
                + (clonedImmutableObject != anImmutableObject));
        System.out.println("clonedImmutableObject.getClass() == anImmutableObject.getClass(): "
                + (clonedImmutableObject.getClass() == anImmutableObject.getClass()));
        System.out.println("clonedImmutableObject.equals(anImmutableObject): "
                + clonedImmutableObject.equals(anImmutableObject));
        clonedImmutableObject.getStrings().add("qwerty111");
        clonedImmutableObject.getStrings().get(0).concat("zzzzzzzzz111");
        clonedImmutableObject.getStringBuffers().add(new StringBuffer("qwerty111"));
        clonedImmutableObject.getStringBuffers().get(0).append("ssss1111");

        System.out.println(anImmutableObject);
    }