test_class.file: core/src/test/java/org/carrot2/attrs/AttrStringArrayTest.java
test_class.identifier: AttrStringArrayTest
test_class.superclass: extends TestBase
test_case.body: @Test
    public void testListValue() {
      class Clazz extends AttrComposite {
        public AttrStringArray value =
            attributes.register("value", AttrStringArray.builder().defaultValue(new String[0]));
      }
  
      AliasMapper mapper = new AliasMapper();
      mapper.alias("clazz", Clazz.class, Clazz::new);
  
      Assertions.assertThat(
              Attrs.populate(
                      new Clazz(),
                      Map.of("value", new String[] {"foo", "bar", null}),
                      mapper::fromName)
                  .value
                  .get())
          .isEqualTo(new String[] {"foo", "bar", null});
  
      Assertions.assertThat(
              Attrs.populate(
                      new Clazz(),
                      Map.of("value", Arrays.asList("foo", "bar", null)),
                      mapper::fromName)
                  .value
                  .get())
          .isEqualTo(new String[] {"foo", "bar", null});
  
      Assertions.assertThat(
              Attrs.populate(
                      new Clazz(),
                      Map.of("value", new Object[] {"foo", "bar", null}),
                      mapper::fromName)
                  .value
                  .get())
          .isEqualTo(new String[] {"foo", "bar", null});
  
      Assertions.assertThat(
              Attrs.populate(
                      new Clazz(),
                      Map.of("value", new CharSequence[] {"foo", "bar", null}),
                      mapper::fromName)
                  .value
                  .get())
          .isEqualTo(new String[] {"foo", "bar", null});
  
      Assertions.assertThatCode(
              () -> {
                Attrs.populate(
                        new Clazz(), Map.of("value", List.of(new Object(), "bar")), mapper::fromName)
                    .value
                    .get();
              })
          .isInstanceOf(IllegalArgumentException.class);
  
      Assertions.assertThatCode(
              () -> {
                Attrs.populate(
                        new Clazz(),
                        Map.of("value", new Object[] {"bar", new Object(), null}),
                        mapper::fromName)
                    .value
                    .get();
              })
          .isInstanceOf(IllegalArgumentException.class);
    }
test_case.class_method_signature: AttrStringArrayTest.testListValue()
test_case.full_signature: @Test public void testListValue()
test_case.identifier: testListValue
test_case.invocations: register defaultValue builder alias isEqualTo assertThat get populate of isEqualTo assertThat get populate of asList isEqualTo assertThat get populate of isEqualTo assertThat get populate of isInstanceOf assertThatCode get populate of of isInstanceOf assertThatCode get populate of
test_case.modifiers: @Test public
test_case.parameters: ()
test_case.return: void
test_case.signature: void testListValue()
focal_class.file: core/src/main/java/org/carrot2/attrs/AttrStringArray.java
focal_class.identifier: AttrStringArray
focal_class.class_method_signature: AttrStringArray.AttrStringArray(
        String[] value, List<? extends Constraint<? super String[]>> constraint, String label)
focal_class.full_signature: private  AttrStringArray(
        String[] value, List<? extends Constraint<? super String[]>> constraint, String label)
focal_class.identifier: AttrStringArray
focal_class.modifiers: private
focal_class.parameters: (
        String[] value, List<? extends Constraint<? super String[]>> constraint, String label)
focal_class.signature:  AttrStringArray(
        String[] value, List<? extends Constraint<? super String[]>> constraint, String label)
focal_class.class_method_signature: AttrStringArray.set(String value, String... values)
focal_class.full_signature: public void set(String value, String... values)
focal_class.identifier: set
focal_class.modifiers: public
focal_class.parameters: (String value, String... values)
focal_class.return: void
focal_class.signature: void set(String value, String... values)
focal_class.class_method_signature: AttrStringArray.builder()
focal_class.full_signature: public static Builder builder()
focal_class.identifier: builder
focal_class.modifiers: public static
focal_class.parameters: ()
focal_class.return: Builder
focal_class.signature: Builder builder()
focal_class.superclass: extends Attr<String[]>
focal_method.body: public static Builder builder() {
      return new Builder();
    }
focal_method.class_method_signature: AttrStringArray.builder()
focal_method.full_signature: public static Builder builder()
focal_method.identifier: builder
focal_method.modifiers: public static
focal_method.parameters: ()
focal_method.return: Builder
focal_method.signature: Builder builder()