import java.util.List;

public class AIOB_Sample {
    int[] fa = new int[4];
    int[] fb;

    public void testOutOfBounds() {
        int[] a = new int[4];

        a[4] = 2;
        fa[4] = 2;
    }

    public void testOutOfBoundsGuard() {
        int[] a = new int[4];

        if (a.length > 4) {
            a[4] = 2;
        }
    }

    public void testUnallocated() {
        int[] b = null;

        b[4] = 4;
        fb[4] = 4;
    }

    public int[] fpPlusPlusNotRecognized(List<String> l) {
        int size = 0;

        for (String s : l) {
            size++;
        }

        int[] data = new int[size];

        data[0] = 0;
        return data;
    }

    public void fpPostAllocate() {
        double[] da = null;

        for (int i = 0; i < 10; i++) {
            if ((i & 1) == 1) {
                da[0] = 0.0;
            }

            if (da == null)
                da = new double[10];
        }
    }

    public void fpPlusEquals(List<String> ss) {
        int size = 0;

        for (String s : ss) {
            size += s.length();
        }

        int[] a = new int[size];

        a[0] = 1;
    }
}

@@ -84,16 +84,62 @@
 nt%5B%5D fb;
+%0A    String%5B%5D unknownFields = new String%5B%5D %7B%7D;
 %0A%0A    pu
@@ -921,17 +921,19 @@
 == null)
+ %7B
 %0A
-
         
@@ -961,16 +961,30 @@
 le%5B10%5D;%0A
+            %7D%0A
         
@@ -1162,32 +1162,32 @@
 new int%5Bsize%5D;%0A%0A
-
         a%5B0%5D = 1
@@ -1193,11 +1193,228 @@
 1;%0A    %7D
+%0A%0A    public String%5B%5D fpCopyFieldOfUnknownSize() %7B%0A        String%5B%5D fields = new String%5BunknownFields.length%5D;%0A        System.arraycopy(unknownFields, 0, fields, 0, unknownFields.length);%0A%0A        return fields;%0A    %7D
 %0A%7D%0A

add fp