public void densify(FeatureMap fMap) {
        // Densify! - guitar solo
        List<String> featureNames = new ArrayList<>(fMap.keySet());
        Collections.sort(featureNames);
        densify(featureNames);
    }
@Test
    public void testArrayExampleDensify() {
        MockOutput output = new MockOutput("UNK");
        Example<MockOutput> example, expected;

        // Single feature
        example = new ArrayExample<>(output, new String[]{"F0"}, new double[]{1.0});
        example.densify(Arrays.asList(featureNames));
        expected = new ArrayExample<>(new MockOutput("UNK"), featureNames, new double[]{1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0});
        checkDenseExample(expected,example);
        testProtoSerialization(example);

        // Already dense
        example = new ArrayExample<>(output, featureNames, new double[]{1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0});
        example.densify(Arrays.asList(featureNames));
        expected = new ArrayExample<>(new MockOutput("UNK"), featureNames, new double[]{1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0});
        checkDenseExample(expected,example);
        testProtoSerialization(example);

        // No edges
        example = new ArrayExample<>(output, new String[]{"F1","F3","F5","F6","F8"}, new double[]{1.0,1.0,1.0,1.0,1.0});
        example.densify(Arrays.asList(featureNames));
        expected = new ArrayExample<>(new MockOutput("UNK"), featureNames, new double[]{0.0,1.0,0.0,1.0,0.0,1.0,1.0,0.0,1.0,0.0});
        checkDenseExample(expected,example);
        testProtoSerialization(example);

        // Only edges
        example = new ArrayExample<>(output, new String[]{"F0","F1","F8","F9"}, new double[]{1.0,1.0,1.0,1.0});
        example.densify(Arrays.asList(featureNames));
        expected = new ArrayExample<>(new MockOutput("UNK"), featureNames, new double[]{1.0,1.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,1.0});
        checkDenseExample(expected,example);
        testProtoSerialization(example);
    }