def _extract_accessor_pairs(members):
    """Extract pairs of corresponding property access methods
    (getter and setter) from a Java class's members (attributes).

    If a public method with a property's name exists no pair for
    that property will be extracted.

    Returns a dictionary with the property name as key and a tuple
    of (getter method, setter method) as value. A tuple element
    value might be `None` if only a getter or only a setter
    exists.
    """
    accessor_pairs = {}

    for name, member in members.items():
        if not (len(name) > _PROPERTY_ACCESSOR_PREFIX_LEN \
                        and _is_java_method(member)):
            continue
        access, rest = ( name[:_PROPERTY_ACCESSOR_PREFIX_LEN],
                         name[_PROPERTY_ACCESSOR_PREFIX_LEN:] )
        property_name = rest[:1].lower() + rest[1:]
        if property_name in members:
            if _is_java_method(members[property_name]):
                continue
        if access == 'get' and member.isBeanAccessor():
            try:
                pair = accessor_pairs[property_name]
                pair[0] = member
            except KeyError:
                accessor_pairs[property_name] = [member, None]
        elif access == 'set' and member.isBeanMutator():
            try:
                pair = accessor_pairs[property_name]
                pair[1] = member
            except KeyError:
                accessor_pairs[property_name] = [None, member]
    return accessor_pairs
Extract pairs of corresponding property access methods
    (getter and setter) from a Java class's members (attributes).

    If a public method with a property's name exists no pair for
    that property will be extracted.

    Returns a dictionary with the property name as key and a tuple
    of (getter method, setter method) as value. A tuple element
    value might be `None` if only a getter or only a setter
    exists.