code: public static List<String> getMutablePropertyNamesOptional(
          Class<?> beanClass)
      {
          List<PropertyDescriptor> propertyDescriptors =
              getPropertyDescriptorsOptional(beanClass);
          List<String> result = new ArrayList<String>();
          for (PropertyDescriptor propertyDescriptor : propertyDescriptors)
          {
              String propertyName = propertyDescriptor.getName();
              Method readMethod = 
                  getReadMethodOptional(beanClass, propertyName);
              Method writeMethod = 
                  getWriteMethodOptional(beanClass, propertyName);
              if (readMethod != null && writeMethod != null)
              {
                  result.add(propertyName);
              }
          }
          return Collections.unmodifiableList(result);
      }
docs: Returns an unmodifiable list of all property names of the given bean
  class for which a read method and a write method exists. If the bean
  class can not be introspected, an empty list will be returned.
  
  @param beanClass The bean class
  @return The property names